//浮点算法计算
let Public = new Object();

// 加法
Public.Addition = function(a, b) {
	var c, d, e;
	try {
		c = a.toString().split(".")[1].length;
	} catch(f) {
		c = 0;
	}
	try {
		d = b.toString().split(".")[1].length;
	} catch(f) {
		d = 0;
	}
	return e = Math.pow(10, Math.max(c, d)), (mul(a, e) + mul(b, e)) / e;
};
// 减法
Public.Subtraction = function(a, b) {
	var c, d, e;
	try {
		c = a.toString().split(".")[1].length;
	} catch(f) {
		c = 0;
	}
	try {
		d = b.toString().split(".")[1].length;
	} catch(f) {
		d = 0;
	}
	return e = Math.pow(10, Math.max(c, d)), (mul(a, e) - mul(b, e)) / e;
};
// 乘法
Public.Multiplication = function(arg1, arg2) {
	var r1, r2, m, n, q;
	if(parseInt(arg1) == arg1) {
		r1 = 0;
	} else {
		r1 = arg1.toString().split(".")[1].length;
	}
	if(parseInt(arg2) == arg2) {
		r2 = 0;
	} else {
		r2 = arg2.toString().split(".")[1].length;
	}
	m = Math.pow(10, r1);
	n = Math.pow(10, r2);
	q = m * n;
	var sum = (((arg1 * m) * (arg2 * n)) / q);
	return sum;
};
// 除法
Public.Division = function(a, b) {
	var c, d, e = 0,
		f = 0;
	try {
		e = a.toString().split(".")[1].length;
	} catch(g) {}
	try {
		f = b.toString().split(".")[1].length;
	} catch(g) {}
	return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".", "")), mul(c / d, Math.pow(10, f - e));
};

function mul(a, b) {
	var c = 0,
		d = a.toString(),
		e = b.toString();
	try {
		c += d.split(".")[1].length;
	} catch(f) {}
	try {
		c += e.split(".")[1].length;
	} catch(f) {}
	return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
}
/*
 各种正则验证
 * */
// 手机正则
Public.checkMobile = function(sMobile) {
	//	var reg = /^1[3|4|5|7|8|6|9][0-9]{9}$/;
	var phone = sMobile.toString().replace(/[ ]/g, "");
	//	var phone = $.trim(sMobile);
	var reg = /^1\d{10}$/;
	return reg.test(phone);

};
//身份证号验证
Public.isCardID = function(sId) {
	if(!/^\d{17}(\d|x)$/i.test(sId)) {
		return false
	} else {
		return true;
	}
}
//密码格式
Public.pwd = function(val) {
	var reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$/
	return reg.test(val);
};
//邮箱验证
Public.email = function(em) {
	var ema = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
	if(!ema.test(em)) {
		return false;
	} else {
		return true;
	}
};
//验证码格式验证
Public.code = function(val) {
	var reg = /^\d{6}$/;
	return reg.test(val);
}
//验证是否为大于0的非空纯数字
Public.Ints = function(val) {
	if(!val) {
		return false;
	} else if(val <= 0) {
		return false;
	} else {
		return true;
	}
}

//页面路由跳转封装
Public.go = function(url, time, _this, data) {
//	var data = !data ? '1' : data; //如果没有data参数 就默认为空
	setTimeout(function() {
		_this.$router.push({
			path: url,
			query: data
		});
	}, time)
}
// 百分数转小数 
Public.toPoint = function(percent) {
	var str = percent.replace("%", "");
	str = str / 100;
	return str;
};
// 时间戳转化
Public.timestampToTime = function(timestamp) {
	var date = new Date(timestamp * 1000); //时间戳为10位需*1000，时间戳为13位的话不需乘1000
	var Y, M, D, h, m, s;
	Y = date.getFullYear() + '-';
	M = (date.getMonth() < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
	D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
	h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':';
	m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':';
	s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds());
	return Y + M + D + h + m + s;
}

//手机号加密 如果后台返回来的手机号是加密的则不用在用此函数
Public.phoneEncryption = function(num) {
	//获得手机号的前3位
	var num = num == undefined ? '' : num; //修改报错
	var a = num.slice(0, 3);
	var b = num.slice(7);
	var ok = a + '****' + b;
	return ok;
}

//密码框显藏切换控制函数
Public.switchs = function(index, _this) {
	if(index == 1) {
		if(_this.isShow.icon == 'password-not-view') {
			_this.isShow.icon = 'password-view';
			_this.isShow.type = 'text';
		} else {
			_this.isShow.icon = 'password-not-view';
			_this.isShow.type = 'password';
		}
	} else if(index == 2) {

		if(_this.isShow.oicon == 'password-not-view') {
			_this.isShow.oicon = 'password-view';
			_this.isShow.otype = 'text';
		} else {
			_this.isShow.oicon = 'password-not-view';
			_this.isShow.otype = 'password';
		}
	} else if(index == 3) {
		if(_this.isShow.ticon == 'password-not-view') {
			_this.isShow.ticon = 'password-view';
			_this.isShow.ttype = 'text';
		} else {
			_this.isShow.ticon = 'password-not-view';
			_this.isShow.ttype = 'password';
		}
	}
}
/*
 获取验证码函数封装 （需要参数 手机号  类型）
 
 * */
Public.getCode = function(mobile, type, _this) {
	_this.btnCode.disabled = true;
	_this.$http.post(_this.$host.code, {
		mobile: mobile,
		type: type
	}).then(function(response) {
		_this.$toast(response.data.msg);
		if(response.data.status == "200") {
			//表示验证码发送成功了 执行倒计时函数
			times();
			var setTime = setInterval(times, 1000)

			function times() {
				_this.btnCode.val = --_this.btnCode.time + 's后重新获取';
				if(_this.btnCode.time <= 0) {
					_this.btnCode = {
						val: '获取验证码',
						disabled: false,
						time: 59
					}
					clearInterval(setTime);
				}
			}
		} else {
			//验证码发送失败
			_this.btnCode.disabled = true;
		}
	}).catch(function(error) {});
}

/*
  短信验证码验证函数 (手机号 验证码)
  
 * */
Public.check_code = function(ev) {
	ev._this.$http.post(ev._this.$host.check_code, {
		mobile: ev.mobile,
		code: ev.code
	}).then(function(response) {
		ev.sfun(response);
	}).catch(function(error) {});

}
//请求个人数据
Public.userInfo = function(ev) {
	ev._this.$http.post(ev._this.$host.userInfo, {
		mobile: ev.mobile
	}).then(function(response) {
		ev.sfun(response);
	}).catch(function() {})
}
//loading 封装
Public.loading = function(msg, _this) {
	_this.$toast.loading({
		mask: true,
		message: msg
	});
}
//询问函数封装
//使用场景 主要用于确定后要跳转到某个页面
Public.confirms = function(_this, msg, urls) {
	console.log(_this);
	_this.$dialog.confirm({
		title: '提示',
		message: msg
	}).then(() => {
		_this.$public.go(urls, 0, _this);
	}).catch(() => {

	});
}

//判断有没有登录封装
Public.islogin = function() {
	if(!sessionStorage.mobile || !sessionStorage.account) {
		return false
	} else {
		return true
	}
}
Public.trading = function(_this) {
	if(!_this.mark.islogin) {
		_this.$public.confirms(_this, '您还没登录，是否前往登录?', 'login');
		return false
	} else if(!_this.getDatas.mail || !_this.getDatas.tpwd || _this.getDatas.status != 3) {
		if(!_this.getDatas.mail || !_this.getDatas.tpwd) {
			_this.$public.confirms(_this, '您的个人信息不完善，是否前往完善?', 'security');
			return false
		} else {
			switch(_this.getDatas.status) {
				case 1:
					_this.$public.confirms(_this, '您还没有实名认证，是立刻认证?', 'security');
					break;
				case 2:
					_this.$toast('您的信息正在审核，暂不能交易');
					break;
				case 4:
					_this.$public.confirms(_this, '您的信息审核失败，是否再次认证?', 'security');
					break;

			}
		}
	}else {return true}
}
//百分数转化为小数
Public.toPoint = function(percent) {
	var percents = percent == undefined ? '0.0%' : percent;
	var str = percents.replace("%", "");
	str = str / 100;
	return str;
}

export default Public;